//
//  NSDate+Extension.swift
//  时间处理
//
//  Created by 张远文 on 16/4/27.
//  Copyright © 2016年 张远文. All rights reserved.
//

import Foundation

extension NSDate {
    
    //将字符串转换为 日期对象 
    class func sinaDate(dateString: String) -> NSDate? {
        //将字符串 转换成日期
        //实例化转换字符串的对象
        let df = NSDateFormatter()
        df.locale = NSLocale(localeIdentifier: "en_US")
        //指定转换格式
        //Fri May 13 16:16:46 +0800 2016
        df.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
        
        //将字符串转换为 日期 对象
        let date = df.dateFromString(dateString)
        print("转换出来的日期:\(date)")
        return date
    }
    
    
    /*
    刚刚(一分钟内)
    X分钟前(一小时内)
    X小时前(当天)
    -------------
    
    昨天 HH:mm(昨天)
    MM-dd HH:mm(一年内)
    yyyy-MM-dd HH:mm(更早期)
    
    
    处理比较复杂的时间的运算 可以 NSCalendar  提供非常丰富的时间处理函数 
    
    */
    
    //将日期转换描述字符串
    func fullDescription() -> String {
        
        let calendar = NSCalendar.currentCalendar()
        
        if calendar.isDateInToday(self) {
            print("今天")
            //确定计算的时间 和当前的时间的差值 
            let delta = Int(NSDate().timeIntervalSinceDate(self))
            if delta < 60 {
                return "刚刚"
            } else if delta < 60 * 60 {
                return "\(delta / 60)分钟前"
            }
            
            return "\(delta / 3600)小时前"
            //表示今天
        }  else {
            //非今天
            
            var dateformatString = ""
            
            if calendar.isDateInYesterday(self) {
                dateformatString = "昨天 HH:mm"
            } else {
                //非昨天 并且 比昨天还要早的日期
                // unitflay 比较单位
                //fromDate 表示的时需要比较的时间
                //toDate  表示 被比较的时间
                let result = calendar.components(.Year, fromDate: self, toDate: NSDate(), options: [])
                if result.year == 0 {
                    //当年 MM-dd HH:mm(一年内)
                    dateformatString = "MM-dd HH:mm"
                } else {
                    //非当年 yyyy-MM-dd HH:mm(更早期)
                    dateformatString = "yyyy-MM-dd HH:mm"
                }
            }
            
            //统一计算所有的时间描述
            let df = NSDateFormatter()
            df.dateFormat =  dateformatString
            return df.stringFromDate(self)
        }
    }
    
}